summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-03-09 02:48:55 +0100
committerbunnei <bunneidev@gmail.com>2023-06-03 09:05:39 +0200
commit0177e908e921a30b352868e2af8c86e37d16cc7c (patch)
treee6e65f1eadfcb4c26e4619b564978ccdef8bb733
parentandroid: Convert InputOverlay to Kotlin (diff)
downloadyuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.tar
yuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.tar.gz
yuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.tar.bz2
yuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.tar.lz
yuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.tar.xz
yuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.tar.zst
yuzu-0177e908e921a30b352868e2af8c86e37d16cc7c.zip
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java139
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt118
2 files changed, 118 insertions, 139 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java
deleted file mode 100644
index 16a4b96ad..000000000
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * Copyright 2013 Dolphin Emulator Project
- * Licensed under GPLv2+
- * Refer to the license.txt file included.
- */
-
-package org.yuzu.yuzu_emu.overlay;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
-import android.view.MotionEvent;
-
-import org.yuzu.yuzu_emu.NativeLibrary.ButtonState;
-
-
-/**
- * Custom {@link BitmapDrawable} that is capable
- * of storing it's own ID.
- */
-public final class InputOverlayDrawableButton {
- // The ID value what type of button this Drawable represents.
- private int mButtonId;
-
- // The ID value what motion event is tracking
- private int mTrackId;
-
- // The drawable position on the screen
- private int mButtonPositionX, mButtonPositionY;
- private int mWidth;
- private int mHeight;
- private BitmapDrawable mDefaultStateBitmap;
- private BitmapDrawable mPressedStateBitmap;
- private boolean mPressedState = false;
-
- /**
- * Constructor
- *
- * @param res {@link Resources} instance.
- * @param defaultStateBitmap {@link Bitmap} to use with the default state Drawable.
- * @param pressedStateBitmap {@link Bitmap} to use with the pressed state Drawable.
- * @param buttonId Identifier for this type of button.
- */
- public InputOverlayDrawableButton(Resources res, Bitmap defaultStateBitmap,
- Bitmap pressedStateBitmap, int buttonId) {
- mDefaultStateBitmap = new BitmapDrawable(res, defaultStateBitmap);
- mPressedStateBitmap = new BitmapDrawable(res, pressedStateBitmap);
- mButtonId = buttonId;
- mTrackId = -1;
-
- mWidth = mDefaultStateBitmap.getIntrinsicWidth();
- mHeight = mDefaultStateBitmap.getIntrinsicHeight();
- }
-
- /**
- * Updates button status based on the motion event.
- *
- * @return true if value was changed
- */
- public boolean updateStatus(MotionEvent event) {
- int pointerIndex = event.getActionIndex();
- int xPosition = (int) event.getX(pointerIndex);
- int yPosition = (int) event.getY(pointerIndex);
- int pointerId = event.getPointerId(pointerIndex);
- int motion_event = event.getAction() & MotionEvent.ACTION_MASK;
- boolean isActionDown = motion_event == MotionEvent.ACTION_DOWN || motion_event == MotionEvent.ACTION_POINTER_DOWN;
- boolean isActionUp = motion_event == MotionEvent.ACTION_UP || motion_event == MotionEvent.ACTION_POINTER_UP;
- boolean current_state = mPressedState;
-
- if (isActionDown) {
- if (!getBounds().contains(xPosition, yPosition)) {
- return false;
- }
- mPressedState = true;
- mTrackId = pointerId;
- return true;
- }
-
- if (isActionUp) {
- if (mTrackId != pointerId) {
- return false;
- }
- mPressedState = false;
- mTrackId = -1;
- return true;
- }
-
- return false;
- }
-
- public void setPosition(int x, int y) {
- mButtonPositionX = x;
- mButtonPositionY = y;
- }
-
- public void draw(Canvas canvas) {
- getCurrentStateBitmapDrawable().draw(canvas);
- }
-
- private BitmapDrawable getCurrentStateBitmapDrawable() {
- return mPressedState ? mPressedStateBitmap : mDefaultStateBitmap;
- }
-
- public void setBounds(int left, int top, int right, int bottom) {
- mDefaultStateBitmap.setBounds(left, top, right, bottom);
- mPressedStateBitmap.setBounds(left, top, right, bottom);
- }
-
- /**
- * Gets this InputOverlayDrawableButton's button ID.
- *
- * @return this InputOverlayDrawableButton's button ID.
- */
- public int getId() {
- return mButtonId;
- }
-
- public int getTrackId() {
- return mTrackId;
- }
-
- public int getStatus() {
- return mPressedState ? ButtonState.PRESSED : ButtonState.RELEASED;
- }
-
- private Rect getBounds() {
- return mDefaultStateBitmap.getBounds();
- }
-
- public int getWidth() {
- return mWidth;
- }
-
- public int getHeight() {
- return mHeight;
- }
-}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt
new file mode 100644
index 000000000..819d9d6b2
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt
@@ -0,0 +1,118 @@
+/**
+ * Copyright 2013 Dolphin Emulator Project
+ * Licensed under GPLv2+
+ * Refer to the license.txt file included.
+ */
+package org.yuzu.yuzu_emu.overlay
+
+import android.content.res.Resources
+import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.Rect
+import android.graphics.drawable.BitmapDrawable
+import android.view.MotionEvent
+import org.yuzu.yuzu_emu.NativeLibrary.ButtonState
+
+/**
+ * Custom [BitmapDrawable] that is capable
+ * of storing it's own ID.
+ *
+ * @param res [Resources] instance.
+ * @param defaultStateBitmap [Bitmap] to use with the default state Drawable.
+ * @param pressedStateBitmap [Bitmap] to use with the pressed state Drawable.
+ * @param buttonId Identifier for this type of button.
+ */
+class InputOverlayDrawableButton(
+ res: Resources,
+ defaultStateBitmap: Bitmap,
+ pressedStateBitmap: Bitmap,
+ buttonId: Int
+) {
+ /**
+ * Gets this InputOverlayDrawableButton's button ID.
+ *
+ * @return this InputOverlayDrawableButton's button ID.
+ */
+ // The ID value what type of button this Drawable represents.
+ val id: Int
+
+ // The ID value what motion event is tracking
+ var trackId: Int
+
+ // The drawable position on the screen
+ private var buttonPositionX = 0
+ private var buttonPositionY = 0
+ val width: Int
+ val height: Int
+ private val defaultStateBitmap: BitmapDrawable
+ private val pressedStateBitmap: BitmapDrawable
+ private var pressedState = false
+
+ init {
+ this.defaultStateBitmap = BitmapDrawable(res, defaultStateBitmap)
+ this.pressedStateBitmap = BitmapDrawable(res, pressedStateBitmap)
+ id = buttonId
+ trackId = -1
+ width = this.defaultStateBitmap.intrinsicWidth
+ height = this.defaultStateBitmap.intrinsicHeight
+ }
+
+ /**
+ * Updates button status based on the motion event.
+ *
+ * @return true if value was changed
+ */
+ fun updateStatus(event: MotionEvent): Boolean {
+ val pointerIndex = event.actionIndex
+ val xPosition = event.getX(pointerIndex).toInt()
+ val yPosition = event.getY(pointerIndex).toInt()
+ val pointerId = event.getPointerId(pointerIndex)
+ val motionEvent = event.action and MotionEvent.ACTION_MASK
+ val isActionDown =
+ motionEvent == MotionEvent.ACTION_DOWN || motionEvent == MotionEvent.ACTION_POINTER_DOWN
+ val isActionUp =
+ motionEvent == MotionEvent.ACTION_UP || motionEvent == MotionEvent.ACTION_POINTER_UP
+
+ if (isActionDown) {
+ if (!bounds.contains(xPosition, yPosition)) {
+ return false
+ }
+ pressedState = true
+ trackId = pointerId
+ return true
+ }
+
+ if (isActionUp) {
+ if (trackId != pointerId) {
+ return false
+ }
+ pressedState = false
+ trackId = -1
+ return true
+ }
+
+ return false
+ }
+
+ fun setPosition(x: Int, y: Int) {
+ buttonPositionX = x
+ buttonPositionY = y
+ }
+
+ fun draw(canvas: Canvas?) {
+ currentStateBitmapDrawable.draw(canvas!!)
+ }
+
+ private val currentStateBitmapDrawable: BitmapDrawable
+ get() = if (pressedState) pressedStateBitmap else defaultStateBitmap
+
+ fun setBounds(left: Int, top: Int, right: Int, bottom: Int) {
+ defaultStateBitmap.setBounds(left, top, right, bottom)
+ pressedStateBitmap.setBounds(left, top, right, bottom)
+ }
+
+ val status: Int
+ get() = if (pressedState) ButtonState.PRESSED else ButtonState.RELEASED
+ private val bounds: Rect
+ get() = defaultStateBitmap.bounds
+}